package com.example.mapper;

import com.example.entity.Emp;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

/**
 * 员工数据访问接口
 */
@Mapper
public interface EmpMapper {
    
    /**
     * 条件查询员工列表
     */
    List<Emp> list(@Param("name") String name, 
                  @Param("deptId") Integer deptId,
                  @Param("beginDate") LocalDate beginDate,
                  @Param("endDate") LocalDate endDate);
    
    /**
     * 根据ID查询员工
     */
    Emp getById(Integer id);
    
    /**
     * 根据用户名查询员工
     */
    Emp getByUsername(String username);
    
    /**
     * 根据手机号查询员工
     */
    Emp getByPhone(String phone);
    
    /**
     * 新增员工
     */
    void insert(Emp emp);
    
    /**
     * 更新员工
     */
    void update(Emp emp);
    
    /**
     * 根据ID删除员工
     */
    void deleteById(Integer id);
    
    /**
     * 批量删除员工
     */
    void deleteByIds(List<Integer> ids);
    
    /**
     * 查询员工详情（包含部门信息）
     */
    Emp getEmpDetail(Integer id);
    
    /**
     * 分页查询员工（包含部门信息）
     */
    List<Emp> pageWithDept(@Param("name") String name, 
                          @Param("deptId") Integer deptId,
                          @Param("beginDate") LocalDate beginDate,
                          @Param("endDate") LocalDate endDate);
} 